home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / gfx / board / rtgmasdriv.lha / driver / copy.s < prev    next >
Text File  |  1997-03-29  |  26KB  |  1,199 lines

  1.         mc68040
  2.         XDEF    _AmigaCC040
  3.         XDEF _MyCopy8
  4.     XDEF _MyCopyBack8
  5.     XDEF _MyCopy16
  6.     XDEF _MyCopyBack16
  7.     XDEF _MyCopy24
  8.     XDEF _MyCopyBack24
  9.     XDEF _MyCopy32
  10.     XDEF _MyCopyBack32
  11.     XDEF _RTGM8_BeginDirectRect
  12.     XDEF _RTGM8_EndDirectRect
  13.     XDEF _RTGM16_BeginDirectRect
  14.     XDEF _RTGM16_EndDirectRect
  15.     XDEF _RTGM24_BeginDirectRect
  16.     XDEF _RTGM24_EndDirectRect
  17.     XDEF _RTGM32_BeginDirectRect
  18.     XDEF _RTGM32_EndDirectRect
  19.     XDEF _TheMap
  20.     XDEF _rtgm_backingbuf
  21.     XDEF _rtgm_scr
  22.     XDEF _RTGMasterBase
  23.     XDEF _Sys_SendKeyEvents
  24.     XDEF _RTGM8_SwapBuffers
  25.     XDEF _RTGM16_SwapBuffers
  26.     XDEF _RTGM24_SwapBuffers
  27.     XDEF _RTGM32_SwapBuffers
  28.     XDEF _currentbuffer
  29.     XDEF _proc_type
  30.     XDEF _rtgmtype
  31.     XDEF _extravram
  32.     XDEF _rtgport
  33.  
  34.     IncDir "include:"
  35.     Include "include:rtgmaster/rtgmaster_lib.i"
  36.     Include "include:exec/types.i"
  37.     Include "include:intuition/intuition.i"
  38.     Include "include:rtgmaster/rtgmaster.i"
  39.  
  40.  STRUCTURE vid,0
  41.   APTR  vd_buffer
  42.   APTR  vd_colormap
  43.   ULONG vd_rowbytes
  44.   ULONG vd_width
  45.   ULONG vd_height
  46.   ULONG vd_numpages
  47.   APTR  vd_direct
  48.   LABEL vid_SIZEOF
  49.  
  50.  STRUCTURE vrect,0
  51.   ULONG vr_x
  52.   ULONG vr_y
  53.   ULONG vr_width
  54.   ULONG vr_height
  55.   APTR  vr_pnext
  56.   LABEL vrect_SIZEOF
  57.  
  58. MOVEM EQU 4
  59. RTGMASTER EQU 3
  60. DOUBLEBUFFER EQU 2
  61. BLITTER EQU 1
  62.  
  63. VID_WAIT_NONE EQU 0
  64. VID_WAIT_VSYNC EQU 1
  65.  
  66. _AmigaCC040     ;IN: D0 - X
  67.         ;    D1 - Y
  68.         ;    D2 - BYTESPERLINE
  69.         ;    D3 - WIDTH
  70.         ;    D4 - HEIGHT
  71.         ;    A0 - SOURCE BUFFER
  72.         ;    A1 - DESTINATION BUFFER
  73.         ;NOTES: X MUST BE DIVISIBLE BY 16
  74.         ;       A0 and A1 MUST BE DIVISIBLE BY 16 (MOVE16 restriction)
  75.         ;       This routine is for 8Bit copy and must no be used
  76.         ;       to copy rectangles in 16/24/32 bits
  77.         ;       BYTESPERLINE MUST BE DIVISIBLE BY 16
  78.         ;       MAXIMUN WIDTH = 2048 pixels
  79.  
  80.         
  81.  
  82.         MOVEM.L D0-D7/A0-A1,-(A7)
  83.         SUBQ.W  #1,D4
  84.         TST.W   D1
  85.         BEQ.S   .NOD1
  86.         MOVE.W  D1,D5
  87.         MULU.W  D2,D5
  88.         ADD.L   D5,A0
  89.         ADD.L   D5,A1
  90. .NOD1   CMP.W   D2,D3
  91.         BEQ     .VERYFAST
  92.         ADD.W   D0,A0
  93.         ADD.W   D0,A1
  94.         SUB.W   D3,D2
  95.         MOVE.W  D3,D0
  96.         LSR.W   #4,D0
  97.         EOR.W   #$7F,D0
  98.         LSL.W   #2,D0
  99.         LSR.W   #1,D3
  100.         AND.W   #$7,D3
  101. .BIGLOOP        MOVE.W  D3,D1
  102.         JMP     .LOOP(PC,D0.W)
  103. .LOOP   MOVE16  (A0)+,(A1)+
  104.         MOVE16  (A0)+,(A1)+
  105.         MOVE16  (A0)+,(A1)+
  106.         MOVE16  (A0)+,(A1)+
  107.         MOVE16  (A0)+,(A1)+
  108.         MOVE16  (A0)+,(A1)+
  109.         MOVE16  (A0)+,(A1)+
  110.         MOVE16  (A0)+,(A1)+
  111.         MOVE16  (A0)+,(A1)+
  112.         MOVE16  (A0)+,(A1)+
  113.         MOVE16  (A0)+,(A1)+
  114.         MOVE16  (A0)+,(A1)+
  115.         MOVE16  (A0)+,(A1)+
  116.         MOVE16  (A0)+,(A1)+
  117.         MOVE16  (A0)+,(A1)+
  118.         MOVE16  (A0)+,(A1)+
  119.         MOVE16  (A0)+,(A1)+
  120.         MOVE16  (A0)+,(A1)+
  121.         MOVE16  (A0)+,(A1)+
  122.         MOVE16  (A0)+,(A1)+
  123.         MOVE16  (A0)+,(A1)+
  124.         MOVE16  (A0)+,(A1)+
  125.         MOVE16  (A0)+,(A1)+
  126.         MOVE16  (A0)+,(A1)+
  127.         MOVE16  (A0)+,(A1)+
  128.         MOVE16  (A0)+,(A1)+
  129.         MOVE16  (A0)+,(A1)+
  130.         MOVE16  (A0)+,(A1)+
  131.         MOVE16  (A0)+,(A1)+
  132.         MOVE16  (A0)+,(A1)+
  133.         MOVE16  (A0)+,(A1)+
  134.         MOVE16  (A0)+,(A1)+
  135.         MOVE16  (A0)+,(A1)+
  136.         MOVE16  (A0)+,(A1)+
  137.         MOVE16  (A0)+,(A1)+
  138.         MOVE16  (A0)+,(A1)+
  139.         MOVE16  (A0)+,(A1)+
  140.         MOVE16  (A0)+,(A1)+
  141.         MOVE16  (A0)+,(A1)+
  142.         MOVE16  (A0)+,(A1)+
  143.         MOVE16  (A0)+,(A1)+
  144.         MOVE16  (A0)+,(A1)+
  145.         MOVE16  (A0)+,(A1)+
  146.         MOVE16  (A0)+,(A1)+
  147.         MOVE16  (A0)+,(A1)+
  148.         MOVE16  (A0)+,(A1)+
  149.         MOVE16  (A0)+,(A1)+
  150.         MOVE16  (A0)+,(A1)+
  151.         MOVE16  (A0)+,(A1)+
  152.         MOVE16  (A0)+,(A1)+
  153.         MOVE16  (A0)+,(A1)+
  154.         MOVE16  (A0)+,(A1)+
  155.         MOVE16  (A0)+,(A1)+
  156.         MOVE16  (A0)+,(A1)+
  157.         MOVE16  (A0)+,(A1)+
  158.         MOVE16  (A0)+,(A1)+
  159.         MOVE16  (A0)+,(A1)+
  160.         MOVE16  (A0)+,(A1)+
  161.         MOVE16  (A0)+,(A1)+
  162.         MOVE16  (A0)+,(A1)+
  163.         MOVE16  (A0)+,(A1)+
  164.         MOVE16  (A0)+,(A1)+
  165.         MOVE16  (A0)+,(A1)+
  166.         MOVE16  (A0)+,(A1)+
  167.         MOVE16  (A0)+,(A1)+
  168.         MOVE16  (A0)+,(A1)+
  169.         MOVE16  (A0)+,(A1)+
  170.         MOVE16  (A0)+,(A1)+
  171.         MOVE16  (A0)+,(A1)+
  172.         MOVE16  (A0)+,(A1)+
  173.         MOVE16  (A0)+,(A1)+
  174.         MOVE16  (A0)+,(A1)+
  175.         MOVE16  (A0)+,(A1)+
  176.         MOVE16  (A0)+,(A1)+
  177.         MOVE16  (A0)+,(A1)+
  178.         MOVE16  (A0)+,(A1)+
  179.         MOVE16  (A0)+,(A1)+
  180.         MOVE16  (A0)+,(A1)+
  181.         MOVE16  (A0)+,(A1)+
  182.         MOVE16  (A0)+,(A1)+
  183.         MOVE16  (A0)+,(A1)+
  184.         MOVE16  (A0)+,(A1)+
  185.         MOVE16  (A0)+,(A1)+
  186.         MOVE16  (A0)+,(A1)+
  187.         MOVE16  (A0)+,(A1)+
  188.         MOVE16  (A0)+,(A1)+
  189.         MOVE16  (A0)+,(A1)+
  190.         MOVE16  (A0)+,(A1)+
  191.         MOVE16  (A0)+,(A1)+
  192.         MOVE16  (A0)+,(A1)+
  193.         MOVE16  (A0)+,(A1)+
  194.         MOVE16  (A0)+,(A1)+
  195.         MOVE16  (A0)+,(A1)+
  196.         MOVE16  (A0)+,(A1)+
  197.         MOVE16  (A0)+,(A1)+
  198.         MOVE16  (A0)+,(A1)+
  199.         MOVE16  (A0)+,(A1)+
  200.         MOVE16  (A0)+,(A1)+
  201.         MOVE16  (A0)+,(A1)+
  202.         MOVE16  (A0)+,(A1)+
  203.         MOVE16  (A0)+,(A1)+
  204.         MOVE16  (A0)+,(A1)+
  205.         MOVE16  (A0)+,(A1)+
  206.         MOVE16  (A0)+,(A1)+
  207.         MOVE16  (A0)+,(A1)+
  208.         MOVE16  (A0)+,(A1)+
  209.         MOVE16  (A0)+,(A1)+
  210.         MOVE16  (A0)+,(A1)+
  211.         MOVE16  (A0)+,(A1)+
  212.         MOVE16  (A0)+,(A1)+
  213.         MOVE16  (A0)+,(A1)+
  214.         MOVE16  (A0)+,(A1)+
  215.         MOVE16  (A0)+,(A1)+
  216.         MOVE16  (A0)+,(A1)+
  217.         MOVE16  (A0)+,(A1)+
  218.         MOVE16  (A0)+,(A1)+
  219.         MOVE16  (A0)+,(A1)+
  220.         MOVE16  (A0)+,(A1)+
  221.         MOVE16  (A0)+,(A1)+
  222.         MOVE16  (A0)+,(A1)+
  223.         MOVE16  (A0)+,(A1)+
  224.         MOVE16  (A0)+,(A1)+
  225.         MOVE16  (A0)+,(A1)+
  226.         MOVE16  (A0)+,(A1)+
  227.         MOVE16  (A0)+,(A1)+
  228.         MOVE16  (A0)+,(A1)+
  229.         MOVE16  (A0)+,(A1)+
  230.         DBF     D1,.LOOP2
  231.         BRA.S   .DH
  232. .LOOP2  MOVE.W  (A0)+,(A1)+
  233.         DBF     D1,.LOOP2
  234. .DH     ADD.W   D2,A0
  235.         ADD.W   D2,A1
  236.         DBF     D4,.BIGLOOP
  237.         MOVEM.L (A7)+,D0-D7/A0-A1
  238.         RTS
  239. .VERYFAST       LSR.W   #4,D3
  240.         EOR.W   #$7F,D3
  241.         LSL.W   #2,D3
  242. .BIGGEST        JMP     .LOOP3(PC,D3.W)
  243. .LOOP3  MOVE16  (A0)+,(A1)+
  244.         MOVE16  (A0)+,(A1)+
  245.         MOVE16  (A0)+,(A1)+
  246.         MOVE16  (A0)+,(A1)+
  247.         MOVE16  (A0)+,(A1)+
  248.         MOVE16  (A0)+,(A1)+
  249.         MOVE16  (A0)+,(A1)+
  250.         MOVE16  (A0)+,(A1)+
  251.         MOVE16  (A0)+,(A1)+
  252.         MOVE16  (A0)+,(A1)+
  253.         MOVE16  (A0)+,(A1)+
  254.         MOVE16  (A0)+,(A1)+
  255.         MOVE16  (A0)+,(A1)+
  256.         MOVE16  (A0)+,(A1)+
  257.         MOVE16  (A0)+,(A1)+
  258.         MOVE16  (A0)+,(A1)+
  259.         MOVE16  (A0)+,(A1)+
  260.         MOVE16  (A0)+,(A1)+
  261.         MOVE16  (A0)+,(A1)+
  262.         MOVE16  (A0)+,(A1)+
  263.         MOVE16  (A0)+,(A1)+
  264.         MOVE16  (A0)+,(A1)+
  265.         MOVE16  (A0)+,(A1)+
  266.         MOVE16  (A0)+,(A1)+
  267.         MOVE16  (A0)+,(A1)+
  268.         MOVE16  (A0)+,(A1)+
  269.         MOVE16  (A0)+,(A1)+
  270.         MOVE16  (A0)+,(A1)+
  271.         MOVE16  (A0)+,(A1)+
  272.         MOVE16  (A0)+,(A1)+
  273.         MOVE16  (A0)+,(A1)+
  274.         MOVE16  (A0)+,(A1)+
  275.         MOVE16  (A0)+,(A1)+
  276.         MOVE16  (A0)+,(A1)+
  277.         MOVE16  (A0)+,(A1)+
  278.         MOVE16  (A0)+,(A1)+
  279.         MOVE16  (A0)+,(A1)+
  280.         MOVE16  (A0)+,(A1)+
  281.         MOVE16  (A0)+,(A1)+
  282.         MOVE16  (A0)+,(A1)+
  283.         MOVE16  (A0)+,(A1)+
  284.         MOVE16  (A0)+,(A1)+
  285.         MOVE16  (A0)+,(A1)+
  286.         MOVE16  (A0)+,(A1)+
  287.         MOVE16  (A0)+,(A1)+
  288.         MOVE16  (A0)+,(A1)+
  289.         MOVE16  (A0)+,(A1)+
  290.         MOVE16  (A0)+,(A1)+
  291.         MOVE16  (A0)+,(A1)+
  292.         MOVE16  (A0)+,(A1)+
  293.         MOVE16  (A0)+,(A1)+
  294.         MOVE16  (A0)+,(A1)+
  295.         MOVE16  (A0)+,(A1)+
  296.         MOVE16  (A0)+,(A1)+
  297.         MOVE16  (A0)+,(A1)+
  298.         MOVE16  (A0)+,(A1)+
  299.         MOVE16  (A0)+,(A1)+
  300.         MOVE16  (A0)+,(A1)+
  301.         MOVE16  (A0)+,(A1)+
  302.         MOVE16  (A0)+,(A1)+
  303.         MOVE16  (A0)+,(A1)+
  304.         MOVE16  (A0)+,(A1)+
  305.         MOVE16  (A0)+,(A1)+
  306.         MOVE16  (A0)+,(A1)+
  307.         MOVE16  (A0)+,(A1)+
  308.         MOVE16  (A0)+,(A1)+
  309.         MOVE16  (A0)+,(A1)+
  310.         MOVE16  (A0)+,(A1)+
  311.         MOVE16  (A0)+,(A1)+
  312.         MOVE16  (A0)+,(A1)+
  313.         MOVE16  (A0)+,(A1)+
  314.         MOVE16  (A0)+,(A1)+
  315.         MOVE16  (A0)+,(A1)+
  316.         MOVE16  (A0)+,(A1)+
  317.         MOVE16  (A0)+,(A1)+
  318.         MOVE16  (A0)+,(A1)+
  319.         MOVE16  (A0)+,(A1)+
  320.         MOVE16  (A0)+,(A1)+
  321.         MOVE16  (A0)+,(A1)+
  322.         MOVE16  (A0)+,(A1)+
  323.         MOVE16  (A0)+,(A1)+
  324.         MOVE16  (A0)+,(A1)+
  325.         MOVE16  (A0)+,(A1)+
  326.         MOVE16  (A0)+,(A1)+
  327.         MOVE16  (A0)+,(A1)+
  328.         MOVE16  (A0)+,(A1)+
  329.         MOVE16  (A0)+,(A1)+
  330.         MOVE16  (A0)+,(A1)+
  331.         MOVE16  (A0)+,(A1)+
  332.         MOVE16  (A0)+,(A1)+
  333.         MOVE16  (A0)+,(A1)+
  334.         MOVE16  (A0)+,(A1)+
  335.         MOVE16  (A0)+,(A1)+
  336.         MOVE16  (A0)+,(A1)+
  337.         MOVE16  (A0)+,(A1)+
  338.         MOVE16  (A0)+,(A1)+
  339.         MOVE16  (A0)+,(A1)+
  340.         MOVE16  (A0)+,(A1)+
  341.         MOVE16  (A0)+,(A1)+
  342.         MOVE16  (A0)+,(A1)+
  343.         MOVE16  (A0)+,(A1)+
  344.         MOVE16  (A0)+,(A1)+
  345.         MOVE16  (A0)+,(A1)+
  346.         MOVE16  (A0)+,(A1)+
  347.         MOVE16  (A0)+,(A1)+
  348.         MOVE16  (A0)+,(A1)+
  349.         MOVE16  (A0)+,(A1)+
  350.         MOVE16  (A0)+,(A1)+
  351.         MOVE16  (A0)+,(A1)+
  352.         MOVE16  (A0)+,(A1)+
  353.         MOVE16  (A0)+,(A1)+
  354.         MOVE16  (A0)+,(A1)+
  355.         MOVE16  (A0)+,(A1)+
  356.         MOVE16  (A0)+,(A1)+
  357.         MOVE16  (A0)+,(A1)+
  358.         MOVE16  (A0)+,(A1)+
  359.         MOVE16  (A0)+,(A1)+
  360.         MOVE16  (A0)+,(A1)+
  361.         MOVE16  (A0)+,(A1)+
  362.         MOVE16  (A0)+,(A1)+
  363.         MOVE16  (A0)+,(A1)+
  364.         MOVE16  (A0)+,(A1)+
  365.         MOVE16  (A0)+,(A1)+
  366.         MOVE16  (A0)+,(A1)+
  367.         MOVE16  (A0)+,(A1)+
  368.         MOVE16  (A0)+,(A1)+
  369.         MOVE16  (A0)+,(A1)+
  370.         DBF     D4,.BIGGEST
  371.         MOVEM.L (A7)+,D0-D7/A0-A1
  372.         RTS
  373. _MyCopy8:
  374.  
  375.     ; A0 - Source Buffer
  376.     ; A1 - Destination Buffer
  377.     ; D0 - Source Buffer RowBytes
  378.     ; D1 - Destination Buffer RowBytes
  379.     ; D2 - Source X Offset
  380.     ; D3 - Source Y Offset
  381.     ; D4 - Width
  382.     ; D5 - Height
  383.  
  384.  
  385.     movem.l d0-d5/a0-a3,-(sp)
  386.     mulu d0,d3
  387.     add d3,a0
  388.     add d2,a0
  389.     move.l d4,d2
  390.     move.l d5,d3
  391.     sub.l #1,d2
  392.     sub.l #1,d3
  393.     sub.l #1,d4
  394.     move.l a0,a2
  395.     move.l a1,a3
  396. .loop1:
  397.     move.b (a0)+,(a1)+
  398.     dbra d2,.loop1
  399.     add.l d0,a2
  400.     add.l d1,a3
  401.     move.l a2,a0
  402.     move.l a3,a1
  403.     move.l d4,d2
  404.     dbra d3,.loop1
  405.     movem.l (sp)+,d0-d5/a0-a3
  406.     rts
  407.  
  408. _MyCopyBack8:
  409.  
  410.     ; A0 - Source Buffer
  411.     ; A1 - Destination Buffer
  412.     ; D0 - Source Buffer RowBytes
  413.     ; D1 - Destination Buffer RowBytes
  414.     ; D2 - Destination X Offset
  415.     ; D3 - Destination Y Offset
  416.     ; D4 - Width
  417.     ; D5 - Height
  418.  
  419.  
  420.     movem.l d0-d5/a0-a3,-(sp)
  421.     mulu d1,d3
  422.     add d3,a1
  423.     add d2,a1
  424.     move.l d4,d2
  425.     move.l d5,d3
  426.     sub.l #1,d2
  427.     sub.l #1,d3
  428.     sub.l #1,d4
  429.     move.l a0,a2
  430.     move.l a1,a3
  431. .loop1:
  432.     move.b (a0)+,(a1)+
  433.     dbra d2,.loop1
  434.     add.l d0,a2
  435.     add.l d1,a3
  436.     move.l a2,a0
  437.     move.l a3,a1
  438.     move.l d4,d2
  439.     dbra d3,.loop1
  440.     movem.l (sp)+,d0-d5/a0-a3
  441.     rts
  442. _MyCopy16:
  443.  
  444.     ; A0 - Source Buffer
  445.     ; A1 - Destination Buffer
  446.     ; D0 - Source Buffer RowBytes
  447.     ; D1 - Destination Buffer RowBytes
  448.     ; D2 - Source X Offset
  449.     ; D3 - Source Y Offset
  450.     ; D4 - Width
  451.     ; D5 - Height
  452.  
  453.  
  454.     movem.l d0-d5/a0-a3,-(sp)
  455.     mulu.l #2,d2
  456.     mulu.l d0,d3
  457.     add d3,a0
  458.     add d2,a0
  459.     move.l d4,d2
  460.     move.l d5,d3
  461.     sub.l #1,d2
  462.     sub.l #1,d3
  463.     sub.l #1,d4
  464.     move.l a0,a2
  465.     move.l a1,a3
  466. .loop1:
  467.     move.w (a0)+,(a1)+
  468.     dbra d2,.loop1
  469.     add.l d0,a2
  470.     add.l d1,a3
  471.     add.l d1,a3
  472.     move.l a2,a0
  473.     move.l a3,a1
  474.     move.l d4,d2
  475.     dbra d3,.loop1
  476.     movem.l (sp)+,d0-d5/a0-a3
  477.     rts
  478.  
  479. _MyCopyBack16:
  480.  
  481.     ; A0 - Source Buffer
  482.     ; A1 - Destination Buffer
  483.     ; D0 - Source Buffer RowBytes
  484.     ; D1 - Destination Buffer RowBytes
  485.     ; D2 - Destination X Offset
  486.     ; D3 - Destination Y Offset
  487.     ; D4 - Width
  488.     ; D5 - Height
  489.  
  490.  
  491.     movem.l d0-d5/a0-a3,-(sp)
  492.     mulu.l #2,d2
  493.     mulu.l d1,d3
  494.     add.l d3,a1
  495.     add.l d2,a1
  496.     move.l d4,d2
  497.     move.l d5,d3
  498.     sub.l #1,d2
  499.     sub.l #1,d3
  500.     sub.l #1,d4
  501.     move.l a0,a2
  502.     move.l a1,a3
  503. .loop1:
  504.     move.w (a0)+,(a1)+
  505.     dbra d2,.loop1
  506.     add.l d0,a2
  507.     add.l d0,a2
  508.     add.l d1,a3
  509.     move.l a2,a0
  510.     move.l a3,a1
  511.     move.l d4,d2
  512.     dbra d3,.loop1
  513.     movem.l (sp)+,d0-d5/a0-a3
  514.     rts
  515. _MyCopy24:
  516.  
  517.     ; A0 - Source Buffer
  518.     ; A1 - Destination Buffer
  519.     ; D0 - Source Buffer RowBytes
  520.     ; D1 - Destination Buffer RowBytes
  521.     ; D2 - Source X Offset
  522.     ; D3 - Source Y Offset
  523.     ; D4 - Width
  524.     ; D5 - Height
  525.  
  526.  
  527.     movem.l d0-d5/a0-a3,-(sp)
  528.     mulu.l #3,d2
  529.     mulu.l d0,d3
  530.     add.l d3,a0
  531.     add.l d2,a0
  532.     move.l d4,d2
  533.     move.l d5,d3
  534.     sub.l #1,d2
  535.     sub.l #1,d3
  536.     sub.l #1,d4
  537.     move.l a0,a2
  538.     move.l a1,a3
  539. .loop1:
  540.     move.w (a0)+,(a1)+
  541.     move.b (a0)+,(a1)+
  542.     dbra d2,.loop1
  543.     add.l d0,a2
  544.     add.l d1,a3
  545.     add.l d1,a3
  546.     add.l d1,a3
  547.     move.l a2,a0
  548.     move.l a3,a1
  549.     move.l d4,d2
  550.     dbra d3,.loop1
  551.     movem.l (sp)+,d0-d5/a0-a3
  552.     rts
  553.  
  554. _MyCopyBack24:
  555.  
  556.     ; A0 - Source Buffer
  557.     ; A1 - Destination Buffer
  558.     ; D0 - Source Buffer RowBytes
  559.     ; D1 - Destination Buffer RowBytes
  560.     ; D2 - Destination X Offset
  561.     ; D3 - Destination Y Offset
  562.     ; D4 - Width
  563.     ; D5 - Height
  564.  
  565.  
  566.     movem.l d0-d5/a0-a3,-(sp)
  567.     mulu.l #3,d2
  568.     mulu.l d1,d3
  569.     add.l d3,a1
  570.     add.l d2,a1
  571.     move.l d4,d2
  572.     move.l d5,d3
  573.     sub.l #1,d2
  574.     sub.l #1,d3
  575.     sub.l #1,d4
  576.     move.l a0,a2
  577.     move.l a1,a3
  578. .loop1:
  579.     move.w (a0)+,(a1)+
  580.     move.b (a0)+,(a1)+
  581.     dbra d2,.loop1
  582.     add.l d0,a2
  583.     add.l d0,a2
  584.     add.l d0,a2
  585.     add.l d1,a3
  586.     move.l a2,a0
  587.     move.l a3,a1
  588.     move.l d4,d2
  589.     dbra d3,.loop1
  590.     movem.l (sp)+,d0-d5/a0-a3
  591.     rts
  592. _MyCopy32:
  593.  
  594.     ; A0 - Source Buffer
  595.     ; A1 - Destination Buffer
  596.     ; D0 - Source Buffer RowBytes
  597.     ; D1 - Destination Buffer RowBytes
  598.     ; D2 - Source X Offset
  599.     ; D3 - Source Y Offset
  600.     ; D4 - Width
  601.     ; D5 - Height
  602.  
  603.  
  604.     movem.l d0-d5/a0-a3,-(sp)
  605.     mulu.l #4,d2
  606.     mulu.l d0,d3
  607.     add.l d3,a0
  608.     add.l d2,a0
  609.     move.l d4,d2
  610.     move.l d5,d3
  611.     sub.l #1,d2
  612.     sub.l #1,d3
  613.     sub.l #1,d4
  614.     move.l a0,a2
  615.     move.l a1,a3
  616. .loop1:
  617.     move.l (a0)+,(a1)+
  618.     dbra d2,.loop1
  619.     add.l d0,a2
  620.     add.l d1,a3
  621.     add.l d1,a3
  622.     add.l d1,a3
  623.     add.l d1,a3
  624.     move.l a2,a0
  625.     move.l a3,a1
  626.     move.l d4,d2
  627.     dbra d3,.loop1
  628.     movem.l (sp)+,d0-d5/a0-a3
  629.     rts
  630.  
  631. _MyCopyBack32:
  632.  
  633.     ; A0 - Source Buffer
  634.     ; A1 - Destination Buffer
  635.     ; D0 - Source Buffer RowBytes
  636.     ; D1 - Destination Buffer RowBytes
  637.     ; D2 - Destination X Offset
  638.     ; D3 - Destination Y Offset
  639.     ; D4 - Width
  640.     ; D5 - Height
  641.  
  642.  
  643.     movem.l d0-d5/a0-a3,-(sp)
  644.     mulu.l #4,d2
  645.     mulu.l d1,d3
  646.     add.l d3,a1
  647.     add.l d2,a1
  648.     move.l d4,d2
  649.     move.l d5,d3
  650.     sub.l #1,d2
  651.     sub.l #1,d3
  652.     sub.l #1,d4
  653.     move.l a0,a2
  654.     move.l a1,a3
  655. .loop1:
  656.     move.l (a0)+,(a1)+
  657.     dbra d2,.loop1
  658.     add.l d0,a2
  659.     add.l d0,a2
  660.     add.l d0,a2
  661.     add.l d0,a2
  662.     add.l d1,a3
  663.     move.l a2,a0
  664.     move.l a3,a1
  665.     move.l d4,d2
  666.     dbra d3,.loop1
  667.     movem.l (sp)+,d0-d5/a0-a3
  668.     rts
  669.  
  670. _RTGM8_BeginDirectRect:
  671.     movem.l a0-a3/a6/d0-d5,-(sp)
  672.     move.l a0,a3
  673.     move.l _TheMap,a0
  674.     move.l _rtgm_backingbuf,a1
  675.     movem.l d0/d1/d2/d3,-(sp)
  676.     movem.l d0/d1,-(sp)
  677.     move.l vd_rowbytes(a3),d0
  678.     move.l d2,d1
  679.     move.l d2,d4
  680.     move.l d3,d5
  681.     movem.l (sp)+,d2/d3
  682.     jsr _MyCopy8
  683.     move.l _rtgm_scr,a0
  684.     move.l _TheMap,a1
  685.     movem.l (sp)+,d0/d1/d2/d3
  686.     xor.l d4,d4
  687.     xor.l d5,d5
  688.     move.l _RTGMasterBase,a6
  689.     jsr _LVOCopyRtgPixelArray(a6)
  690.     movem.l (sp)+,a0-a3/a6/d0-d5
  691.     rts
  692.  
  693. _RTGM8_EndDirectRect:
  694.     movem.l a0-a3/d0-d5,-(sp)
  695.     move.l a0,a3
  696.     move.l _rtgm_backingbuf,a0
  697.     move.l _TheMap,a1
  698.     move.l d2,d4
  699.     move.l d3,d5
  700.     move.l d0,d2
  701.     move.l d1,d3
  702.     move.l d2,d0
  703.     move.l vd_rowbytes(a3),d1
  704.     jsr _MyCopyBack8
  705.     movem.l (sp)+,a0-a3/d0-d5
  706.     rts
  707.  
  708. _RTGM16_BeginDirectRect:
  709.     movem.l a0-a3/a6/d0-d5,-(sp)
  710.     move.l a0,a3
  711.     move.l _TheMap,a0
  712.     move.l _rtgm_backingbuf,a1 
  713.     movem.l d0/d1/d2/d3,-(sp)
  714.     movem.l d0/d1,-(sp)
  715.     move.l vd_rowbytes(a3),d0
  716.     move.l d2,d1
  717.     move.l d2,d4
  718.     move.l d3,d5
  719.     movem.l (sp)+,d2/d3
  720.     jsr _MyCopy16
  721.     move.l _rtgm_scr,a0
  722.     move.l _TheMap,a1
  723.     movem.l (sp)+,d0/d1/d2/d3
  724.     xor.l d4,d4
  725.     xor.l d5,d5
  726.     move.l _RTGMasterBase,a6
  727.     jsr _LVOCopyRtgPixelArray(a6)
  728.     movem.l (sp)+,a0-a3/a6/d0-d5
  729.     rts
  730.  
  731. _RTGM16_EndDirectRect:
  732.     movem.l a0-a3/d0-d5,-(sp)
  733.     move.l a0,a3
  734.     move.l _rtgm_backingbuf,a0
  735.     move.l _TheMap,a1
  736.     move.l d2,d4
  737.     move.l d3,d5
  738.     move.l d0,d2
  739.     move.l d1,d3
  740.     move.l d2,d0
  741.     move.l vd_rowbytes(a3),d1
  742.     jsr _MyCopyBack16
  743.     movem.l (sp)+,a0-a3/d0-d5
  744.     rts
  745.  
  746. _RTGM24_BeginDirectRect:
  747.     movem.l a0-a3/a6/d0-d5,-(sp)
  748.     move.l a0,a3
  749.     move.l _TheMap,a0
  750.     move.l _rtgm_backingbuf,a1
  751.     movem.l d0/d1/d2/d3,-(sp)
  752.     movem.l d0/d1,-(sp)
  753.     move.l vd_rowbytes(a3),d0
  754.     move.l d2,d1
  755.     move.l d2,d4
  756.     move.l d3,d5
  757.     movem.l (sp)+,d2/d3
  758.     jsr _MyCopy24
  759.     move.l _rtgm_scr,a0
  760.     move.l _TheMap,a1
  761.     movem.l (sp)+,d0/d1/d2/d3
  762.     xor.l d4,d4
  763.     xor.l d5,d5
  764.     move.l _RTGMasterBase,a6
  765.     jsr _LVOCopyRtgPixelArray(a6)
  766.     movem.l (sp)+,a0-a3/a6/d0-d5
  767.     rts
  768.  
  769. _RTGM24_EndDirectRect:
  770.     movem.l a0-a3/d0-d5,-(sp)
  771.     move.l a0,a3
  772.     move.l _rtgm_backingbuf,a0
  773.     move.l _TheMap,a1
  774.     move.l d2,d4
  775.     move.l d3,d5
  776.     move.l d0,d2
  777.     move.l d1,d3
  778.     move.l d2,d0
  779.     move.l vd_rowbytes(a3),d1
  780.     jsr _MyCopyBack24
  781.     movem.l (sp)+,a0-a3/d0-d5
  782.     rts
  783.  
  784. _RTGM32_BeginDirectRect:
  785.     movem.l a0-a3/a6/d0-d5,-(sp)
  786.     move.l a0,a3
  787.     move.l _TheMap,a0
  788.     move.l _rtgm_backingbuf,a1
  789.     movem.l d0/d1/d2/d3,-(sp)
  790.     movem.l d0/d1,-(sp)
  791.     move.l vd_rowbytes(a3),d0
  792.     move.l d2,d1
  793.     move.l d2,d4
  794.     move.l d3,d5
  795.     movem.l (sp)+,d2/d3
  796.     jsr _MyCopy32
  797.     move.l _rtgm_scr,a0
  798.     move.l _TheMap,a1
  799.     movem.l (sp)+,d0/d1/d2/d3
  800.     xor.l d4,d4
  801.     xor.l d5,d5
  802.     move.l _RTGMasterBase,a6
  803.     jsr _LVOCopyRtgPixelArray(a6)
  804.     movem.l (sp)+,a0-a3/a6/d0-d5
  805.     rts
  806.  
  807. _RTGM32_EndDirectRect:
  808.     movem.l a0-a3/d0-d5,-(sp)
  809.     move.l a0,a3
  810.     move.l _rtgm_backingbuf,a0
  811.     move.l _TheMap,a1
  812.     move.l d2,d4
  813.     move.l d3,d5
  814.     move.l d0,d2
  815.     move.l d1,d3
  816.     move.l d2,d0
  817.     move.l vd_rowbytes(a3),d1
  818.     jsr _MyCopyBack32
  819.     movem.l (sp)+,a0-a3/d0-d5
  820.     rts
  821.  
  822. _Sys_SendKeyEvents:
  823.     movem.l a0-a1/a6/d1,-(sp)
  824.     move.l _rtgm_scr,a0
  825.     move.l _RTGMasterBase,a6
  826.     jsr _LVORtgGetMsg(a6)
  827.     cmp.l #0,d0
  828.     beq .quit
  829.     move.l d0,a0
  830.     move.l im_Class(a0),d0
  831.     xor.l d1,d1
  832.     move.w im_Code(a0),d1
  833.     lea events,a1
  834.     move.l #0,(a1)
  835.     move.l #0,4(a1)
  836.     move.w #0,8(a1)
  837.     move.w im_Qualifier(a0),4(a1)
  838.     move.w im_MouseX(a0),6(a1)
  839.     move.w im_MouseY(a0),8(a1)
  840.     move.l a0,a1
  841.     move.l _rtgm_scr,a0
  842.     movem.l d0/d1,-(sp)
  843.     jsr _LVORtgReplyMsg(a6)
  844.     movem.l (sp)+,d0/d1
  845.     move.l d0,-(sp)
  846.     and.l #IDCMP_RAWKEY+IDCMP_MOUSEBUTTONS,d0
  847.     cmp.l #0,d0
  848.     beq .quit2
  849.     move.l (sp)+,d0
  850.     and.l #IDCMP_MOUSEBUTTONS,d0
  851.     cmp.l #0,d0
  852.     bne .mouse
  853.     lea events,a0
  854.     move.w d1,(a0)
  855.     move.l a0,d0
  856.     movem.l (sp)+,a0-a1/a6/d1
  857.     rts
  858. .mouse:
  859.    lea events,a0
  860.    move.w d1,2(a0)
  861.    move.l a0,d0
  862.    movem.l (sp)+,a0-a1/a6/d1
  863.    rts
  864. .quit2:
  865.     move.l (sp)+,d0
  866. .quit:
  867.     lea events,a0
  868.     move.l _rtgport,a1
  869.     move.l a2,-(sp)
  870.     move.l rdcmp_MouseY(a1),a2
  871.     move.l rdcmp_MouseX(a1),a1
  872.     move.w (a1),6(a0)
  873.     move.w (a2),8(a0)
  874.     move.l (sp)+,a2
  875.     move.l a0,d0
  876.     movem.l (sp)+,a0-a1/a6/d1
  877.     rts
  878. events:
  879.     dc.w 0
  880.     dc.w 0,0
  881.     dc.w 0,0
  882.  
  883. _RTGM8_SwapBuffers:
  884.     movem.l a0-a3/a6/d0-d2,-(sp)
  885.     cmp.l #VID_WAIT_VSYNC,d0
  886.     bne .nowait
  887.     movem.l a0-a2,-(sp)
  888.     move.l _rtgm_scr,a0
  889.     move.l _RTGMasterBase,a6 
  890.     jsr _LVOWaitTOF(a6)
  891.     movem.l (sp)+,a0-a2
  892. .nowait:
  893.     move.l _rtgmtype,d0
  894.     cmp.l #DOUBLEBUFFER,d0
  895.     beq .DBuffer
  896.     cmp.l #BLITTER,d0
  897.     beq .Blit
  898.     cmp.l #RTGMASTER,d0
  899.     beq .Rtgmaster
  900.     beq .Movem
  901.     cmp.l #MOVEM,d0
  902.     beq .Movem
  903.     move.l _proc_type,d0
  904.     cmp.l #1,d0
  905.     beq .FCopy
  906. .Rtgmaster:
  907.     move.l a0,a3
  908.     move.l _rtgm_scr,a0
  909.     move.l _TheMap,a1
  910.     move.l vr_x(a2),d0
  911.     move.l vr_y(a2),d1
  912.     move.l vr_width(a2),d2
  913.     move.l vr_height(a2),d3
  914.     move.l vd_buffer(a3),a2
  915.     move.l #0,d4
  916.     move.l #0,d5
  917.     jsr _LVOCopyRtgPixelArray(a6)
  918.     jmp .quit
  919. .Movem:
  920.     movem.l d3-d7,-(sp)
  921.     move.l a0,a3
  922.     move.l vd_buffer(a3),a0
  923.     move.l vr_y(a2),d1
  924.     mulu.l vd_rowbytes(a3),d1
  925.     move.l _TheMap,a1
  926.     add.l d1,a1
  927.     move.l vr_x(a2),d0
  928.     add.l d0,a1
  929.     move.l vr_width(a2),d2
  930.     move.l vr_height(a2),d3
  931.     move.l vd_rowbytes(a3),d0
  932.     sub.l d2,d0
  933.     lsr.l #6,d2 
  934.     sub.l #1,d2
  935.     sub.l #1,d3
  936.     move.l d2,d1
  937. .loop:
  938.     Movem.l (A0)+,d4-d7
  939.     Movem.l d4-d7,(A1)
  940.     Movem.l (A0)+,d4-d7
  941.     Movem.l d4-d7,16*1(A1)
  942.     Movem.l (A0)+,d4-d7
  943.     Movem.l d4-d7,16*2(A1)
  944.     Movem.l (A0)+,d4-d7
  945.     Movem.l d4-d7,16*3(A1)
  946.     lea 64(a1),a1
  947.     dbra d1,.loop
  948.     move.l d2,d1
  949.     add.l d0,a0
  950.     add.l d0,a1
  951.     dbra d3,.loop
  952.     movem.l (sp)+,d3-d7
  953.     jmp .quit
  954.  
  955. .DBuffer:
  956.     move.l a0,a3
  957.     move.l _rtgm_scr,a0
  958.     move.l #1,d0
  959.     sub.l _currentbuffer,d0
  960.     jsr _LVOSwitchScreens(a6)
  961.     move.l _rtgm_scr,a0
  962.     move.l _currentbuffer,d0
  963.     jsr _LVOGetBufAdr(a6)
  964.     move.l d0,vd_buffer(a3)
  965.     move.l #1,d0
  966.     sub.l _currentbuffer,d0
  967.     move.l d0,_currentbuffer
  968.     move.l _rtgm_scr,a0
  969.     move.l _currentbuffer,d0
  970.     jsr _LVOGetBufAdr(a6)
  971.     move.l d0,_TheMap
  972.     jmp .quit
  973. .Blit:
  974.     move.l _rtgm_scr,a0
  975.     move.l #1,a1
  976.     move.l vr_x(a2),d2
  977.     move.l vr_y(a2),d3
  978.     move.l vr_width(a2),d4
  979.     move.l vr_height(a2),d5
  980.     move.l #0,a2
  981.     move.l #0,d0
  982.     move.l #0,d1
  983.     move.l #$C0,d6
  984.     jsr _LVORtgBlit(a6)
  985.     jmp .quit
  986. .FCopy:
  987.     move.l vd_rowbytes(a0),d2
  988.     move.l vd_buffer(a0),a0
  989.     move.l vr_x(a2),d0
  990.     move.l vr_y(a2),d1
  991.     move.l _TheMap,a1
  992.     move.l vr_width(a2),d2
  993.     move.l vr_height(a2),d3
  994.     jsr _AmigaCC040
  995. .quit:
  996.     movem.l (sp)+,a0-a3/a6/d0-d2
  997.     rts
  998.  
  999. _RTGM16_SwapBuffers:
  1000.     movem.l a0-a3/a6/d0-d2,-(sp)
  1001.     cmp.l #VID_WAIT_VSYNC,d0
  1002.     bne .nowait
  1003.     movem.l a0-a2,-(sp)
  1004.     move.l _rtgm_scr,a0
  1005.     move.l _RTGMasterBase,a6
  1006.     jsr _LVOWaitTOF(a6)
  1007.     movem.l (sp)+,a0-a2
  1008. .nowait:
  1009.     move.l _rtgmtype,d0
  1010.     cmp.l #DOUBLEBUFFER,d0
  1011.     beq .DBuffer
  1012.     cmp.l #BLITTER,d0
  1013.     beq .Blit
  1014. .Rtgmaster:
  1015.     move.l a0,a3
  1016.     move.l _rtgm_scr,a0
  1017.     move.l _TheMap,a1
  1018.     move.l vr_x(a2),d0
  1019.     move.l vr_y(a2),d1
  1020.     move.l vr_width(a2),d2
  1021.     move.l vr_height(a2),d3
  1022.     move.l vd_buffer(a3),a2
  1023.     move.l #0,d4
  1024.     move.l #0,d5
  1025.     jsr _LVOCopyRtgPixelArray(a6)
  1026.     jmp .quit
  1027. .DBuffer:
  1028.     move.l a0,a3
  1029.     move.l _rtgm_scr,a0
  1030.     move.l #1,d0
  1031.     sub.l _currentbuffer,d0
  1032.     jsr _LVOSwitchScreens(a6)
  1033.     move.l _rtgm_scr,a0
  1034.     move.l _currentbuffer,d0
  1035.     jsr _LVOGetBufAdr(a6)
  1036.     move.l d0,vd_buffer(a3)
  1037.     move.l #1,d0
  1038.     sub.l _currentbuffer,d0
  1039.     move.l d0,_currentbuffer
  1040.     move.l _rtgm_scr,a0
  1041.     move.l _currentbuffer,d0
  1042.     jsr _LVOGetBufAdr(a6)
  1043.     move.l d0,_TheMap
  1044.     jmp .quit
  1045. .Blit:
  1046.     move.l _rtgm_scr,a0
  1047.     move.l #1,a1
  1048.     move.l vr_x(a2),d2
  1049.     move.l vr_y(a2),d3
  1050.     move.l vr_width(a2),d4
  1051.     move.l vr_height(a2),d5
  1052.     move.l #0,a2
  1053.     move.l #0,d0
  1054.     move.l #0,d1
  1055.     move.l #$C0,d6
  1056.     jsr _LVORtgBlit(a6)
  1057.     jmp .quit
  1058. .quit:
  1059.     movem.l (sp)+,a0-a3/a6/d0-d2
  1060.     rts
  1061.  
  1062. _RTGM24_SwapBuffers:
  1063.     movem.l a0-a3/a6/d0-d2,-(sp)
  1064.     cmp.l #VID_WAIT_VSYNC,d0
  1065.     bne .nowait
  1066.     movem.l a0-a2,-(sp)
  1067.     move.l _rtgm_scr,a0
  1068.     move.l _RTGMasterBase,a6
  1069.     jsr _LVOWaitTOF(a6)
  1070.     movem.l (sp)+,a0-a2
  1071. .nowait:
  1072.     move.l _rtgmtype,d0
  1073.     cmp.l #DOUBLEBUFFER,d0
  1074.     beq .DBuffer
  1075.     cmp.l #BLITTER,d0
  1076.     beq .Blit
  1077. .Rtgmaster:
  1078.     move.l a0,a3
  1079.     move.l _rtgm_scr,a0
  1080.     move.l _TheMap,a1
  1081.     move.l vr_x(a2),d0
  1082.     move.l vr_y(a2),d1
  1083.     move.l vr_width(a2),d2
  1084.     move.l vr_height(a2),d3
  1085.     move.l vd_buffer(a3),a2
  1086.     move.l #0,d4
  1087.     move.l #0,d5
  1088.     jsr _LVOCopyRtgPixelArray(a6)
  1089.     jmp .quit
  1090. .DBuffer:
  1091.     move.l a0,a3
  1092.     move.l _rtgm_scr,a0
  1093.     move.l #1,d0
  1094.     sub.l _currentbuffer,d0
  1095.     jsr _LVOSwitchScreens(a6)
  1096.     move.l _rtgm_scr,a0
  1097.     move.l _currentbuffer,d0
  1098.     jsr _LVOGetBufAdr(a6)
  1099.     move.l d0,vd_buffer(a3)
  1100.     move.l #1,d0
  1101.     sub.l _currentbuffer,d0
  1102.     move.l d0,_currentbuffer
  1103.     move.l _rtgm_scr,a0
  1104.     move.l _currentbuffer,d0
  1105.     jsr _LVOGetBufAdr(a6)
  1106.     move.l d0,_TheMap
  1107.     jmp .quit
  1108. .Blit:
  1109.     move.l _rtgm_scr,a0
  1110.     move.l #1,a1
  1111.     move.l vr_x(a2),d2
  1112.     move.l vr_y(a2),d3
  1113.     move.l vr_width(a2),d4
  1114.     move.l vr_height(a2),d5
  1115.     move.l #0,a2
  1116.     move.l #0,d0
  1117.     move.l #0,d1
  1118.     move.l #$C0,d6
  1119.     jsr _LVORtgBlit(a6)
  1120.     jmp .quit
  1121. .quit:
  1122.     movem.l (sp)+,a0-a3/a6/d0-d2
  1123.     rts
  1124.  
  1125. _RTGM32_SwapBuffers:
  1126.     movem.l a0-a3/a6/d0-d2,-(sp)
  1127.     cmp.l #VID_WAIT_VSYNC,d0
  1128.     bne .nowait
  1129.     movem.l a0-a2,-(sp)
  1130.     move.l _rtgm_scr,a0
  1131.     move.l _RTGMasterBase,a6
  1132.     jsr _LVOWaitTOF(a6)
  1133.     movem.l (sp)+,a0-a2
  1134. .nowait:
  1135.     move.l _rtgmtype,d0
  1136.     cmp.l #DOUBLEBUFFER,d0
  1137.     beq .DBuffer
  1138.     cmp.l #BLITTER,d0
  1139.     beq .Blit
  1140. .Rtgmaster:
  1141.     move.l a0,a3
  1142.     move.l _rtgm_scr,a0
  1143.     move.l _TheMap,a1
  1144.     move.l vr_x(a2),d0
  1145.     move.l vr_y(a2),d1
  1146.     move.l vr_width(a2),d2
  1147.     move.l vr_height(a2),d3
  1148.     move.l vd_buffer(a3),a2
  1149.     move.l #0,d4
  1150.     move.l #0,d5
  1151.     jsr _LVOCopyRtgPixelArray(a6)
  1152.     jmp .quit
  1153. .DBuffer:
  1154.     move.l a0,a3
  1155.     move.l _rtgm_scr,a0
  1156.     move.l #1,d0
  1157.     sub.l _currentbuffer,d0
  1158.     jsr _LVOSwitchScreens(a6)
  1159.     move.l _rtgm_scr,a0
  1160.     move.l _currentbuffer,d0
  1161.     jsr _LVOGetBufAdr(a6)
  1162.     move.l d0,vd_buffer(a3)
  1163.     move.l #1,d0
  1164.     sub.l _currentbuffer,d0
  1165.     move.l d0,_currentbuffer
  1166.     move.l _rtgm_scr,a0
  1167.     move.l _currentbuffer,d0
  1168.     jsr _LVOGetBufAdr(a6)
  1169.     move.l d0,_TheMap
  1170.     jmp .quit
  1171. .Blit:
  1172.     move.l _rtgm_scr,a0
  1173.     move.l #1,a1
  1174.     move.l vr_x(a2),d2
  1175.     move.l vr_y(a2),d3
  1176.     move.l vr_width(a2),d4
  1177.     move.l vr_height(a2),d5
  1178.     move.l #0,a2
  1179.     move.l #0,d0
  1180.     move.l #0,d1
  1181.     move.l #$C0,d6
  1182.     jsr _LVORtgBlit(a6)
  1183.     jmp .quit
  1184. .quit:
  1185.     movem.l (sp)+,a0-a3/a6/d0-d2
  1186.     rts
  1187.  
  1188. _TheMap: dc.l 0
  1189. _rtgm_scr: dc.l 0
  1190. _rtgm_backingbuf: dc.l 0
  1191. _RTGMasterBase: dc.l 0
  1192. _currentbuffer: dc.l 0
  1193. _proc_type: dc.l 0
  1194. _rtgmtype: dc.l 0
  1195. _extravram: dc.l 0
  1196. _rtgport: dc.l 0
  1197.     END
  1198.  
  1199.